﻿Imports System.Data
Imports System.Data.SqlClient
Imports CondorTravel.BE
Imports CondorTravelUTIL.DL

Public Class SolicitudPaqueteDALC

    Public Function InsertarSolicitudPaquete(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(6) As SqlParameter
        'Dim sqlSolicitudServicioInsertar As String

        Try
            ''1. Definir la sentencia a ejecutar
            'sqlSolicitudServicioInsertar = "SP_SolicitudServicioIns"

            '2. Definir e instanciar los parámetros a utilizar

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@DES_PAQUETE"
            arrSqlParameter(0).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(0).Size = 50
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objSolicitudPaqueteBE.NombrePaquete

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@DES_PROVEEDOR"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 50
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudPaqueteBE.Proveedor

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@DES_SERVICIO"
            arrSqlParameter(2).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(2).Size = 100
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objSolicitudPaqueteBE.Servicios

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@OBSERVACIONES"
            arrSqlParameter(3).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(3).Size = 100
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = ""

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@FEC_VIGENCIAINI"
            arrSqlParameter(4).SqlDbType = SqlDbType.Date
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objSolicitudPaqueteBE.FechaVigenciaInicio


            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@FEC_VIGENCIAFIN"
            arrSqlParameter(5).SqlDbType = SqlDbType.Date
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objSolicitudPaqueteBE.FechaVigenciaFin


            arrSqlParameter(6) = New SqlParameter()
            arrSqlParameter(6).ParameterName = "@USUARIO"
            arrSqlParameter(6).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(6).Size = 10
            arrSqlParameter(6).Direction = ParameterDirection.Input
            arrSqlParameter(6).Value = objSolicitudPaqueteBE.UsuarioCreador

            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_SolicitudPaqueteIns", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function

    Public Function ModificaSolicitudPaquete(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(8) As SqlParameter
        'Dim sqlSolicitudServicioInsertar As String

        Try
            '1. Definir la sentencia a ejecutar
            'sqlSolicitudServicioInsertar = "SP_SolicitudServicioUpd"

            '2. Definir e instanciar los parámetros a utilizar

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_PAQUETE"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objSolicitudPaqueteBE.CodSolicitud

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@DES_PAQUETE"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 50
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudPaqueteBE.NombrePaquete

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@DES_PROVEEDOR"
            arrSqlParameter(2).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(2).Size = 50
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objSolicitudPaqueteBE.Proveedor

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@DES_SERVICIO"
            arrSqlParameter(3).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(3).Size = 100
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objSolicitudPaqueteBE.Servicios

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@OBSERVACIONES"
            arrSqlParameter(4).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(4).Size = 100
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objSolicitudPaqueteBE.Observaciones

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@FEC_VIGENCIAINI"
            arrSqlParameter(5).SqlDbType = SqlDbType.Date
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objSolicitudPaqueteBE.FechaInicio


            arrSqlParameter(6) = New SqlParameter()
            arrSqlParameter(6).ParameterName = "@FEC_VIGENCIAFIN"
            arrSqlParameter(6).SqlDbType = SqlDbType.Date
            arrSqlParameter(6).Direction = ParameterDirection.Input
            arrSqlParameter(6).Value = objSolicitudPaqueteBE.FechaFin

            arrSqlParameter(7) = New SqlParameter()
            arrSqlParameter(7).ParameterName = "@ESTADO"
            arrSqlParameter(7).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(7).Size = 1
            arrSqlParameter(7).Direction = ParameterDirection.Input
            arrSqlParameter(7).Value = objSolicitudPaqueteBE.Estado

            arrSqlParameter(8) = New SqlParameter()
            arrSqlParameter(8).ParameterName = "@USUARIO"
            arrSqlParameter(8).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(8).Size = 10
            arrSqlParameter(8).Direction = ParameterDirection.Input
            arrSqlParameter(8).Value = objSolicitudPaqueteBE.UsuarioActualiza

            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_SolicitudPaqueteUpd", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

    End Function
    Public Function ListaSolicitudPaquete(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE) As List(Of SolicitudPaqueteBE)

        Dim sqlListar As String
        Dim objListaSolPaquete As New List(Of SolicitudPaqueteBE)
        Dim objSolPaqueteBE As SolicitudPaqueteBE = Nothing
        Dim arrSqlParameter(5) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudPaqueteList"

            arrSqlParameter(0) = New SqlParameter("@DESPAQUETE", System.Data.SqlDbType.VarChar)
            arrSqlParameter(0).Value = objSolicitudPaqueteBE.NombrePaquete

            arrSqlParameter(1) = New SqlParameter("@DESSERVICIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objSolicitudPaqueteBE.Servicios

            arrSqlParameter(2) = New SqlParameter("@DESPROVEEDOR", System.Data.SqlDbType.VarChar)
            arrSqlParameter(2).Value = objSolicitudPaqueteBE.Proveedor

            arrSqlParameter(3) = New SqlParameter("@ESTADO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(3).Value = objSolicitudPaqueteBE.Estado

            arrSqlParameter(4) = New SqlParameter("@FECHAINICIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(4).Value = objSolicitudPaqueteBE.FechaInicio

            arrSqlParameter(5) = New SqlParameter("@FECHAFIN", System.Data.SqlDbType.VarChar)
            arrSqlParameter(5).Value = objSolicitudPaqueteBE.FechaFin


            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolPaquete = New List(Of SolicitudPaqueteBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolPaqueteBE = New SolicitudPaqueteBE()
                    objSolPaqueteBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolPaqueteBE.NombrePaquete = dt.Rows(intI).ItemArray(1).ToString
                    objSolPaqueteBE.Servicios = dt.Rows(intI).ItemArray(2).ToString
                    objSolPaqueteBE.Proveedor = dt.Rows(intI).ItemArray(8).ToString
                    objSolPaqueteBE.FechaVigenciaInicio = dt.Rows(intI).ItemArray(3).ToString.Substring(0, 10)
                    objSolPaqueteBE.FechaVigenciaFin = dt.Rows(intI).ItemArray(4).ToString.Substring(0, 10)
                    objSolPaqueteBE.Observaciones = dt.Rows(intI).ItemArray(5).ToString
                    objSolPaqueteBE.UsuarioCreador = dt.Rows(intI).ItemArray(6).ToString
                    objSolPaqueteBE.Estado = dt.Rows(intI).ItemArray(7).ToString
                    intI = intI + 1

                    objListaSolPaquete.Add(objSolPaqueteBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolPaquete
    End Function


    Public Function ListaSolicitudPaquete_Update(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of SolicitudPaqueteBE)

        Dim sqlListar As String
        Dim objListaSolPaquete As New List(Of SolicitudPaqueteBE)
        Dim objSolPaqueteBE As SolicitudPaqueteBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudPaqueteUpdate_List"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objSolicitudPaqueteBE.CodSolicitud

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolPaquete = New List(Of SolicitudPaqueteBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolPaqueteBE = New SolicitudPaqueteBE()
                    objSolPaqueteBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolPaqueteBE.NombrePaquete = dt.Rows(intI).ItemArray(1).ToString
                    objSolPaqueteBE.FechaVigenciaInicio = dt.Rows(intI).ItemArray(2).ToString
                    objSolPaqueteBE.FechaVigenciaFin = dt.Rows(intI).ItemArray(3).ToString
                    objSolPaqueteBE.Proveedor = dt.Rows(intI).ItemArray(4).ToString
                    objSolPaqueteBE.Servicios = dt.Rows(intI).ItemArray(5).ToString
                    objSolPaqueteBE.Observaciones = dt.Rows(intI).ItemArray(6).ToString
                    objSolPaqueteBE.UsuarioCreador = dt.Rows(intI).ItemArray(9).ToString
                    intI = intI + 1


                    objListaSolPaquete.Add(objSolPaqueteBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolPaquete
    End Function

    Public Function EliminarSolicitudPaquete(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE) As Integer

        Dim arrSqlParameter(1) As SqlParameter
        Dim sqlSolicitudServicioEliminar As String
        Dim iNumIncidente As Integer

        Try
            '1. Definir la sentencia a ejecutar
            sqlSolicitudServicioEliminar = "SP_SolicitudPaqueteDel"

            '2. Definir e instanciar los parámetros a utilizar
            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.ReturnValue

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_PAQUETE"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudPaqueteBE.CodSolicitud



            '3. Ejecutar la sentencia
            SqlHelper.ExecuteNonQuery(GetConnectionString, _
                                      CommandType.StoredProcedure, _
                                      sqlSolicitudServicioEliminar, _
                                      arrSqlParameter)

            '4. Recuperar el valor de retorno
            iNumIncidente = arrSqlParameter(0).Value

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return iNumIncidente

    End Function
    Public Function ListaSolicitudPaquete_Busqueda(ByVal objSolicitudPaqueteBE As SolicitudPaqueteBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of SolicitudPaqueteBE)

        Dim sqlListar As String
        Dim objListaSolPaquete As New List(Of SolicitudPaqueteBE)
        Dim objSolPaqueteBE As SolicitudPaqueteBE = Nothing
        Dim arrSqlParameter(1) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudPaquete_List_Busq"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objSolicitudPaqueteBE.CodSolicitud

            arrSqlParameter(1) = New SqlParameter("@NOMBRE", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objSolicitudPaqueteBE.NombrePaquete

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolPaquete = New List(Of SolicitudPaqueteBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolPaqueteBE = New SolicitudPaqueteBE()
                    objSolPaqueteBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolPaqueteBE.NombrePaquete = dt.Rows(intI).ItemArray(1).ToString
                    objSolPaqueteBE.Proveedor = dt.Rows(intI).ItemArray(2).ToString
                    objSolPaqueteBE.Observaciones = dt.Rows(intI).ItemArray(3).ToString
                    objSolPaqueteBE.Estado = dt.Rows(intI).ItemArray(4).ToString
                    objSolPaqueteBE.FechaVigenciaInicio = dt.Rows(intI).ItemArray(6).ToString
                    objSolPaqueteBE.FechaVigenciaFin = dt.Rows(intI).ItemArray(7).ToString
                    objSolPaqueteBE.UsuarioCreador = dt.Rows(intI).ItemArray(8).ToString
                    intI = intI + 1

                    objListaSolPaquete.Add(objSolPaqueteBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolPaquete
    End Function
End Class
